iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 2
0
Software Development

從0開始學習程式-Python系列 第 3

[Day 6] python 陣列和字串都幾?

  • 分享至 

  • xImage
  •  


不知道大家Friday night過得好嗎?我們還是繼續來動動腦吧!
昨天的題目還是
Q. 現在有一個陣列[5, 3, 4, 9, (3,5), ['I', 'T', 'iron'], 'man']請問這裡面有幾個element?
若取出element只有數字的部分,接著把最後一個和第二個數字交換,則這一個只有數字的list為何?

L=[5, 3, 4, 9, (3,5), ['I', 'T', 'iron'], 'man']
num=L[:4]
num[-1],num[1]=num[1],num[-1]
print(len(L)) #output:7
print(num) #output:[5, 9, 4, 3]

關於數字交換,在Python中可以直接a,b=b,a,但還是建議開始學習程式的新手還是要看得懂下面數字交換的方法:

num=[5, 3, 4, 9]
b=num[3]
num[3]=num[1]
num[1]=b
print(num)  #output:[5, 9, 4, 3]

好了~關於昨天的作業我們就先這樣吧!

List 操作指令(2)

假設有list L1和list L2:
L1.extend(L2):將L2接在L1後面
L1.reverse():將L1的排序前後倒置
L1.sort():將L1裡面的數值由小到大排序,但如果不想要移動原本的list的話,則可以使用sorted(L),可以得到相同的效果喔
L1.insert(index, value):將value插入在index的位置,剩下的內容往後推移一個單位
sum(L1):如果L1裡面都是數值的話,可以用sum回傳每個元素的數值相加後的結果
max(L1)min(L1):如果L1裡面都是數值的話,可以用maxmax回傳list中最大或最小的值

L=[1, 5, 2, 7, 8, 4]
Q=[12, 50, 32]
st=['baby','King','Mac','knife','boy','babe','food']
print(sorted(L)) #output:[1, 2, 4, 5, 7, 8]
print(sorted(st)) #output:['King', 'Mac', 'babe', 'baby', 'boy', 'food', 'knife']

conbi=L+Q
L.extend(Q)
print(L)  #output:[1, 5, 2, 7, 8, 4, 12, 50, 32]
print(conbi)  #output:[1, 5, 2, 7, 8, 4, 12, 50, 32]
print(L.sort(reverse=True))  #output:[50, 32, 12, 8, 7, 5, 4, 2, 1]

Q.insert(1, 95)
print(Q)  #output:[12, 95, 50, 32]

我們就上面幾項再做詳細說明:

  1. 不管是.sort()或者sorted()在排序的過程中,會將reverse這個參數默認為False,所以在操作時若沒有特別指定,一率都是由小到大排序,當reverse=True,此時排序就會由大到小

  2. 在使用.sort()或者sorted()時只可以針對由字串組成的list或者由整數及小數組成的list進行排序,若list同時有字串及數字時,則會出現錯誤訊息,另外字串在比較時,會利用他們的ASCII的數值大小比較,而排序會由第一個字母進行比較,若相同則繼續往下一個字母比較,直到結束為止~

#純數比較
K=[3, 2, 4, 2.5, 4.5]
print(sorted(K))  #output:[2, 2.5, 3, 4, 4.5]
#字串比較
st=['baby','1','knief','2','food','15']
print(sorted(st))  #output:['1', '15', '2', 'baby', 'food', 'knief']
st=['app','a']
print(sorted(st))  #output:['a', 'app']
#純數與字串混合不能比較
st=['baby',1,'knief',2,'food',15]
print(sorted(st))
#output:TypeError: '<' not supported between instances of 'int' and 'str'
  1. L+QL.extend(Q)可以達到相同效果,但唯一不一樣在後者會改面L原本的樣子,但前者則不影響,需要再用一個變數進行儲存

list是一個可變動的變數,所以初學者在操作時,要特別注意!

就這樣結束了嗎?

當然還沒有啊!這樣樣的操作過程中,不知道你有沒有覺得字串好像有些操作好像會跟list很像呢?
以下我們直接舉例好了!

A='asdfghjkl'
print(A[:5]) #output:'asdfg'
print(A[1:7:2]) #output:'sfh'
a='How '
b='you '
c='doin'
print(a+b+c) #output:'How you doin'

** 字串不一樣在於大多數的list的指令無法使用!**

就這樣而已?太唬了吧?

當然不是囉~讓我們繼續看下去
len(str):可知字串長度,空白字元也會計算!
str.split(...):可將字串進行切割,若括號中都不放則默認空白字元的地方切割,或者可以指定切割位置,如',',切割完後的結果會存放在list中
str.replace(target,obj,count):在字串str中將你想要換掉字元(target),利用新字元(obj)進行取代,看字串出現幾次target,若沒有指定count次數,則會將字串中所有target取代為obj,若有指定取代count次,則從頭一去取代到指定次數,若count次數超過target出現次數,則會將全部target取代為obj。

講了這麼多,直接來看範例比較快!

A='Hey, Hey, How you doin.'
print(len(A)) #output:18
print(A.split())  #output:['Hey,', 'Hey,', 'How', 'you', 'doin.']
print(A.split(','))  #output:['Hey', 'Hey', ' How you doin.']
print(A.replace('Hey','Hi',0))  #output:'Hey, Hey, How you doin.'
print(A.replace('Hey','Hi',1))  #output:'Hi, Hey, How you doin.'
print(A.replace('H','h'))  #output:'hi, hey, how you doin.'
print(A.replace('H','h',5))  #output:'hi, hey, how you doin.'

好吧~也是夠多了~我們今天就在這裡停下來吧!
我們今天慶祝一下週末,我們今天就不要有練習吧~
絕對不是我想偷懶

Have a nice weekend


上一篇
[Day5]Python也有櫃子?
下一篇
[Day7] 圈圈圓圓迴圈? 之 最後一次暑假
系列文
從0開始學習程式-Python32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言